\Slide{Inconsistent synchronization detector}{
\B
\item Inconsistent synchronization: look for fields sometimes locked
      and sometimes unlocked when accessed
\item Implemented as FindInconsistentSync2 detector in FindBugs
\item Analysis technique: dataflow analysis to count number of
      locks acquired by monitorenter instructions
\item We will ignore many details:
  \B
  \item Accesses in constructors and other lifecycle methods
        not likely to be accessible by multiple threads
  \item Accesses in a method may be protected by lock acquired in caller
  \item Etc.
  \E
\item Goal: understand dataflow analysis framework in FindBugs
\E
}
